/*
 * WSO2 API Manager - Publisher API
 * This specifies a **RESTful API** for WSO2 **API Manager** - Publisher.  Please see [full swagger definition](https://raw.githubusercontent.com/wso2/carbon-apimgt/v6.0.4/components/apimgt/org.wso2.carbon.apimgt.rest.api.publisher/src/main/resources/publisher-api.yaml) of the API which is written using [swagger 2.0](http://swagger.io/) specification. 
 *
 * OpenAPI spec version: 0.10.0
 * Contact: architecture@wso2.com
 *
 * NOTE: This class is auto generated by the swagger code generator program.
 * https://github.com/swagger-api/swagger-codegen.git
 * Do not edit the class manually.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */


package org.wso2.carbon.apimgt.rest.integration.tests.api;

import org.wso2.carbon.apimgt.rest.integration.tests.ApiException;
import org.wso2.carbon.apimgt.rest.integration.tests.model.API;

import java.io.File;
import org.junit.Test;

/**
 * API tests for APIIndividualApi
 */
public class APIIndividualApiIT {

    private final APIIndividualApi api = new APIIndividualApi();

    
    /**
     * Delete an API
     *
     * This operation can be used to delete an existing API proving the Id of the API. 
     *
     * @throws ApiException
     *          if the Api call fails
     */
    @Test
    public void apisApiIdDeleteTest() throws ApiException {
        String apiId = null;
        String ifMatch = null;
        String ifUnmodifiedSince = null;
        // api.apisApiIdDelete(apiId, ifMatch, ifUnmodifiedSince);

        // TODO: test validations
    }
    
    /**
     * Get gateway definition
     *
     * This operation can be used to retrieve the gateway configuration of an API. 
     *
     * @throws ApiException
     *          if the Api call fails
     */
    @Test
    public void apisApiIdGatewayConfigGetTest() throws ApiException {
        String apiId = null;
        String accept = null;
        String ifNoneMatch = null;
        String ifModifiedSince = null;
        // api.apisApiIdGatewayConfigGet(apiId, accept, ifNoneMatch, ifModifiedSince);

        // TODO: test validations
    }
    
    /**
     * Update gateway configuration
     *
     * This operation can be used to update the gateway configuration of an existing API. gateway configuration to be updated is passed as a form data parameter &#x60;gatewayConfig&#x60;. 
     *
     * @throws ApiException
     *          if the Api call fails
     */
    @Test
    public void apisApiIdGatewayConfigPutTest() throws ApiException {
        String apiId = null;
        String gatewayConfig = null;
        String contentType = null;
        String ifMatch = null;
        String ifUnmodifiedSince = null;
        // api.apisApiIdGatewayConfigPut(apiId, gatewayConfig, contentType, ifMatch, ifUnmodifiedSince);

        // TODO: test validations
    }
    
    /**
     * Get details of an API
     *
     * Using this operation, you can retrieve complete details of a single API. You need to provide the Id of the API to retrive it. 
     *
     * @throws ApiException
     *          if the Api call fails
     */
    @Test
    public void apisApiIdGetTest() throws ApiException {
        String apiId = null;
        String accept = null;
        String ifNoneMatch = null;
        String ifModifiedSince = null;
        // API response = api.apisApiIdGet(apiId, accept, ifNoneMatch, ifModifiedSince);

        // TODO: test validations
    }
    
    /**
     * Update an API
     *
     * This operation can be used to update an existing API. But the properties &#x60;name&#x60;, &#x60;version&#x60;, &#x60;context&#x60;, &#x60;provider&#x60;, &#x60;state&#x60; will not be changed by this operation. 
     *
     * @throws ApiException
     *          if the Api call fails
     */
    @Test
    public void apisApiIdPutTest() throws ApiException {
        String apiId = null;
        API body = null;
        String contentType = null;
        String ifMatch = null;
        String ifUnmodifiedSince = null;
        // API response = api.apisApiIdPut(apiId, body, contentType, ifMatch, ifUnmodifiedSince);

        // TODO: test validations
    }
    
    /**
     * Get swagger definition
     *
     * This operation can be used to retrieve the swagger definition of an API. 
     *
     * @throws ApiException
     *          if the Api call fails
     */
    @Test
    public void apisApiIdSwaggerGetTest() throws ApiException {
        String apiId = null;
        String accept = null;
        String ifNoneMatch = null;
        String ifModifiedSince = null;
        // api.apisApiIdSwaggerGet(apiId, accept, ifNoneMatch, ifModifiedSince);

        // TODO: test validations
    }
    
    /**
     * Update swagger definition
     *
     * This operation can be used to update the swagger definition of an existing API. Swagger definition to be updated is passed as a form data parameter &#x60;apiDefinition&#x60;. 
     *
     * @throws ApiException
     *          if the Api call fails
     */
    @Test
    public void apisApiIdSwaggerPutTest() throws ApiException {
        String apiId = null;
        String apiDefinition = null;
        String contentType = null;
        String ifMatch = null;
        String ifUnmodifiedSince = null;
        // api.apisApiIdSwaggerPut(apiId, apiDefinition, contentType, ifMatch, ifUnmodifiedSince);

        // TODO: test validations
    }
    
    /**
     * Get thumbnail image
     *
     * This operation can be used to download a thumbnail image of an API. 
     *
     * @throws ApiException
     *          if the Api call fails
     */
    @Test
    public void apisApiIdThumbnailGetTest() throws ApiException {
        String apiId = null;
        String accept = null;
        String ifNoneMatch = null;
        String ifModifiedSince = null;
        // api.apisApiIdThumbnailGet(apiId, accept, ifNoneMatch, ifModifiedSince);

        // TODO: test validations
    }
    
    /**
     * Upload a thumbnail image
     *
     * This operation can be used to upload a thumbnail image of an API. The thumbnail to be uploaded should be given as a form data parameter &#x60;file&#x60;. 
     *
     * @throws ApiException
     *          if the Api call fails
     */
    @Test
    public void apisApiIdThumbnailPostTest() throws ApiException {
        String apiId = null;
        File file = null;
        String contentType = null;
        String ifMatch = null;
        String ifUnmodifiedSince = null;
        // FileInfo response = api.apisApiIdThumbnailPost(apiId, file, contentType, ifMatch, ifUnmodifiedSince);

        // TODO: test validations
    }
    
    /**
     * Change API Status
     *
     * This operation is used to change the lifecycle of an API. Eg: Publish an API which is in &#x60;CREATED&#x60; state. In order to change the lifecycle, we need to provide the lifecycle &#x60;action&#x60; as a query parameter.  For example, to Publish an API, &#x60;action&#x60; should be &#x60;Publish&#x60;.  Some actions supports providing additional paramters which should be provided as &#x60;lifecycleChecklist&#x60; parameter. Please see parameters table for more information. 
     *
     * @throws ApiException
     *          if the Api call fails
     */
    @Test
    public void apisChangeLifecyclePostTest() throws ApiException {
        String action = null;
        String apiId = null;
        String lifecycleChecklist = null;
        String ifMatch = null;
        String ifUnmodifiedSince = null;
        // api.apisChangeLifecyclePost(action, apiId, lifecycleChecklist, ifMatch, ifUnmodifiedSince);

        // TODO: test validations
    }
    
    /**
     * Create a new API version
     *
     * This operation can be used to create a new version of an existing API. The new version is specified as &#x60;newVersion&#x60; query parameter. New API will be in &#x60;CREATED&#x60; state. 
     *
     * @throws ApiException
     *          if the Api call fails
     */
    @Test
    public void apisCopyApiPostTest() throws ApiException {
        String newVersion = null;
        String apiId = null;
        // api.apisCopyApiPost(newVersion, apiId);

        // TODO: test validations
    }
    
}
